iT邦幫忙

2022 iThome 鐵人賽

DAY 24
2
Software Development

從 Node.js 開發者到量化交易者:打造屬於自己的投資系統系列 第 24

Day 24 - 即時行情監控:富果行情 API 與 LINE Notify 的應用(上)

  • 分享至 

  • xImage
  •  

前一天我們介紹可以運用技術指標來規劃股票買賣的進場點與出場點,不過股票市場瞬息萬變,並不是每一個股票市場的參與者,都有辦法時時刻刻盯盤、關注盤面狀況。這時候我們就需要「到價提醒」的功能,當滿足設定的條件時,可以讓在第一時間獲得通知,進而決定是否拋售表現不佳的持股,或者買進未來看漲的標的。

接下來的兩天,我們將介紹如何實現即時行情監控系統,以 富果行情 API 結合 LINE Notify 服務為例,打造一個屬於自己的股票監控程式。我們將這個主題分成「上」篇和「下」篇,在今日「上」篇的部分,我們會說明如何申請使用富果行情 API 與 LINE Notify 服務,以及即時行情監控系統的設計和資料處理流程。

富果股市 API

目前國內已有許多券商提供臺股即時行情報價的 API 服務,而 玉山證券富果帳戶富果股市 API 則提供了對 Node.js 最完整的支援。

富果股市 API 包含行情 API 與 交易 API,行情 API 提供即時報價與歷史股價等資訊;交易 API 可以進行下單委託及帳務查詢等功能。我們的即時行情監控系統將以富果行情 API 為例,實作後續的應用。

取得富果行情 API Token

在使用富果股市 API 之前,您必須先擁有玉山證券富果帳戶,只要是富果帳戶的用戶即可免費使用富果行情 API,關於開戶方式可參考 玉山證券富果帳戶 網站。完成開戶後,請登入 富果股市 API 網站。

https://ithelp.ithome.com.tw/upload/images/20220924/20150150nfvO52Ukwr.png

登入後,在 金鑰申請及管理 頁面,可以新增行情 API token。

富果股市 API 首頁 > 文件 > 行情 > 金鑰申請

https://ithelp.ithome.com.tw/upload/images/20220924/201501502hzYvcne49.png

取得 API token 後,就可以使用 富果即時行情 API。在免費方案下,行情 API 每秒可以請求 60 次;WeboSocket 可以同時有 5 個連線數。

LINE Notify

LINE 是目前臺灣最多人使用的通訊軟體,LINE Notify 就是 LINE 提供的服務,每個 LINE 用戶都可以成為 LINE Notify 的服務提供者。只要 LINE 使用者與服務提供者完成連動後,當服務提供者透過 LINE Notify API 發送推播,LINE 的官方帳號「LINE Notify」就會向使用者或群組傳送訊息。

目前,只要是 LINE 用戶都可以免費申請使用 LINE Notify 服務。不過,仍有以下限制需要注意:

  • 一個有效的個人存取權杖每小時最多能發送 1000 則訊息。
  • 發送的文字訊息不可以超過 1000 個字元。
  • 訊息格式只允許文字、圖片和基本貼圖。

取得 LINE Notify Access Token

在使用 LINE Notify 服務之前,我們需要一組個人存取權杖 (Access Token) 來請求 API 發送通知。進入 LINE Notify 網站後,使用自己的帳號登入。

https://ithelp.ithome.com.tw/upload/images/20220924/20150150h0y1O7pAZq.png

登入 LINE Notify 網站後,在頁面右上方個人帳戶下,點選進入 「個人頁面」。

https://ithelp.ithome.com.tw/upload/images/20220924/201501509egoBhNZEB.png

進入 LINE Notify 個人頁面,我們可以看到「已連動的服務」和「發行存取權杖」。LINE Notify 授權是基於 OAuth 2.0 的授權碼(Authorization Code)模式,如果我們的應用程式是提供給他人使用時,就需要先取得該使用者的授權。因為我們使用 LINE Notify 訊息推播的對象是自己,所以不需要走這個授權流程,這裡我們直接按下「發行權杖」即可。

https://ithelp.ithome.com.tw/upload/images/20220924/20150150CB0tamwt23.png

接著會跳出一個表單視窗。請填寫權杖名稱,然後接收通知的聊天室請選擇「透過1對1聊天接收Line Notify的通知」。

https://ithelp.ithome.com.tw/upload/images/20220924/20150150ohZCPgeQJ4.png

點選「發行」後,LINE Notify 會產生你的個人存取權杖 (Access Token)。因為這段代碼只會出現一次,請務必記住這組權杖代碼。

https://ithelp.ithome.com.tw/upload/images/20220924/20150150i1g5hVlZtL.png

完成後,在「連動的服務」清單裡,就會出現我們剛剛所設定的服務。

https://ithelp.ithome.com.tw/upload/images/20220924/20150150Hg7UB7YZRd.png

在您的手機版或桌機版的 LINE 應用程式上,也會同步收到「已發行個人存取權杖」通知。

https://ithelp.ithome.com.tw/upload/images/20220924/20150150lC3GZjXVK3.png

Monitor 應用伺服器概觀

我們的目標是打造即時行情監控系統,因此我們會建立一個「Monitor」應用伺服器(Application Server)。為了理解之後實作的內容,我們先描繪出 Monitor 應用伺服器的系統環境圖:

https://ithelp.ithome.com.tw/upload/images/20220924/20150150M0FQnHnNzR.png

在 Monitor 應用伺服器中,主要包含以下元件:

  • Monitor API:提供 REST 風格的 HTTP API,使用者可以向 Monitor 應用程式發送請求,建立到價提醒設定。
  • Monitor Service:處理 Monitor API 請求,同時與 Fugle Realtime 建立連線接收即時行情報價,並判斷是否觸發提醒通知,透過 LINE Notify 請求發送推播訊息。
  • MongoDB:作為數據持久化的資料庫,儲存使用者的到價提醒設定。
  • Redis:作為暫存到價提醒設定的快取,加速處理即時行情的速度。

在 Monitor 應用伺服器處理資料的流程分成兩大部分,包含使用者向 Monitor 應用伺服器請求建立到價提醒,以及 Monitor 應用伺服器接收 Fugle Realtime 即時行情的資料處理。

使用者向 Monitor 應用伺服器請求建立到價提醒:

  • ① User → Monitor API:使用者向 Monitor API 發送請求,建立到價提醒設定。
  • ② Monitor API → Monitor Service:Monitor Service 處理使用者向 Monitor API 發送的請求。
  • ③ Monitor Service → MongoDB:Monitor Service 將到價提醒設定儲存至 MongoDB 資料庫。
  • ④ Monitor Service → Redis:Monitor Service 將到價提醒設定寫入 Redis 快取。

Monitor 應用伺服器接收 Fugle Realtime 即時行情:

  • ① Fugle Realtime → Monitor Service:Monitor Service 與 Fugle Realtime 建立 WebSocket 連線,在交易日盤中會接收最新的即時行情報價。
  • ② Monitor Service → Redis:當 Monitor Service 收到監控股票的最新報價時,會與 Redis 快取的到價提醒設定做比對,判斷是否觸發提醒通知。
  • ③ Monitor Service → LINE Notify:當提醒通知的條件觸發時,Monitor Service 會向 LINE Notify 請求發送推播訊息。
  • ④ LINE Notify → User:LINE Notify 收到推播請求後,會將訊息發送給使用者。
  • ⑤ Monitor Service → MongoDB:完成到價提醒通知後,Monitor Service 會更新 MongoDB 資料庫的到價提醒設定並將其標示為已通知。

今日「上」篇我們介紹如何申請使用富果行情 API 與 LINE Notify 服務,並說明即時行情監控系統的設計和資料處理流程。在明日「下」篇的部分,我們會著手進行即時行情監控系統的開發與實作。

本日小結

  • 暸解如何申請富果股市 API,並取得富果行情 API Token 準備串接臺股即時報價服務。
  • 暸解如何申請 LINE Notify 服務,並取得 LINE Notify Access Token 準備向使用者發送推播訊息。
  • 瞭解實現即時行情監控的 Monitor 應用伺服器的元件組成以及資料處理流程。

Node.js 量化投資全攻略:從資料收集到自動化交易系統建構實戰
本系列文已正式出版為《Node.js 量化投資全攻略:從資料收集到自動化交易系統建構實戰》。本書新增了全新內容和實用範例,為你提供更深入的學習體驗!歡迎參考選購,開始你的量化投資之旅!
天瓏網路書店連結:https://www.tenlong.com.tw/products/9786263336070


上一篇
Day 23 - 進場點與出場點:技術指標的應用
下一篇
Day 25 - 即時行情監控:富果行情 API 與 LINE Notify 的應用(下)
系列文
從 Node.js 開發者到量化交易者:打造屬於自己的投資系統31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言